package list.linkedlist;

import java.util.LinkedList;
import java.util.List;

public class Test {

    public static void main(String[] args) {
//        final A testA = new A(66666);
//        testA.say2(testA);
//        System.out.println(testA.age);
//        testA.say(testA);
//        System.out.println(testA.age);
//        A aa1 = new A(1);
//        A aa2 = new A(2);
//        A aa3 = aa1;
//        aa1.age = 10;
//        System.out.println(aa3.age);// 10
//        aa1 = aa2;
//        System.out.println(aa3.age);// 10
//        A a = new A(1);
//        A a2 = a; // a2并不是指向引用a，而是指向引用a指向的对象
//        // 只有a还是指向原来的对象，那么它对对象的修改就会对指向这个对象的所有引用起效
//        a.age = 20; 
//        System.out.println(a2.age);// 20
//        A a3 = a;
//        a = new A(100);
//        System.out.println(a3.age);// 20
//
        List<String> list = new LinkedList<>();
        list.add(null);
        list.add(null);
        list.forEach(System.out::println);
        list.remove(null);
        list.forEach(System.out::println);
        list.add("111");
        list.add("111");
        list.remove("111");
        System.out.println("----------");
        list.forEach(System.out::println);
        System.out.println("----------");
        LinkedList<String> clone = (LinkedList<String>) ((LinkedList<String>) list).clone();
        clone.forEach(System.out::println);
//        for(int i=0;i<100000;i++) {
//            list.add("s"+i);
//        }
//        System.out.println("get");
//        list.remove("111");list.remove(1);
//        String str = list.get(50001);
//        System.out.println(str);
//        list = new ArrayList<>();
    }
}
class A {
    public Integer age;
    public A(int age) {
        this.age = age;
    }
    public void say(final A a) {
        a.age = 100;
    }
    public void say2(A a) {
        A a2 = new A(20000);
        a = a2;
        a.age = 100;
    }
}